package controller.midlet;

import java.util.ArrayList;
import java.util.List;

import dto.OrdemServicoDTO;
import enumtype.MaterialET;
import facade.OsMoveisException;

public class OrdemServicoBuilder {
	public static OrdemServicoDTO create(String [] dadosOS) throws OsMoveisException {
		if (dadosOS.length == 0) throw new OsMoveisException("Dados informatos estão incorretos.");
		else if (dadosOS.length == 1) {
			OrdemServicoDTO osdto = new OrdemServicoDTO();
			osdto.setCodigoObjeto(Integer.parseInt(dadosOS[0]));
			return osdto;
		}
		else if (dadosOS.length == 3) {
			OrdemServicoDTO osdto = new OrdemServicoDTO();
			osdto.setCodigoObjeto(Integer.parseInt(dadosOS[0]));
			osdto.setUsuario(dadosOS[1]);
			osdto.setSenha(dadosOS[2]);
			return osdto;
		}
		else if (dadosOS.length > 3) {
			OrdemServicoDTO osdto = new OrdemServicoDTO();
			osdto.setCodigoObjeto(Integer.parseInt(dadosOS[0]));
			osdto.setUsuario(dadosOS[1]);
			osdto.setSenha(dadosOS[2]);
			osdto.setNumOs(Integer.parseInt(dadosOS[3]));
			osdto.setDescrServico(dadosOS[4]);
			osdto.setStatus(Byte.parseByte(dadosOS[5]));
			if (dadosOS.length > 6) {
				//Se vier material
				List <String> materiais = new ArrayList<String> ();
				for (int i = 6; i < dadosOS.length - 1; i++) {
					StringBuilder sb = new StringBuilder();
					sb.append(MaterialET.fromCode(Byte.parseByte(dadosOS[i])));
					sb.append("   -   ");
					++i;
					sb.append(dadosOS[i]);
					materiais.add(sb.toString());
				}
				osdto.setMateriais(materiais);
			}
			return osdto;
		}
		return null;
	}
}
